1. Field of the Invention
This invention relates generally to storage devices and architectures for storing data, and in one particular example, for storing user data associated with a real-time communication application such as an Instant Messaging (IM) application or Voice over IP (VoIP) application.
2. Related Art
Many applications provide for real-time (or near real-time) communications between two or more clients via a network. One illustrative example includes instant messaging applications, which generally enable two or more participants to communicate over a computer network, such as the Internet or an internet (e.g., a private network), in more or less real time. Typically, each participant uses a client computer system to send and receive messages (including, e.g., text, voice, files, and the like) via a user interface. Each client computer in communication is connected via a network to an instant messaging service provider including a server. The server device receives and processes messages from participants, including by forwarding them to the client systems of the other participants for display.
Generally, user data (e.g., user records such as id lists, buddy lists, etc.) associated with each user communicating via a real-time communication application is stored in a conventional database accessible by an application server. Retrieving user data from conventional databases, however, is generally inefficient for desired instantaneous or near-instantaneous processing of requests and message delivery of real time communications. For example, querying a database, which may include disk I/O or the like, is generally time consuming. Accordingly, time delays for retrieving user data from the databases to facilitate real-time communications, particular as the number of users increases, deteriorates the user experience of real-time communications.
It is desired to store user data in a more efficient fashion and increase the accessibility of user data compared to conventional database access typically employed with real-time communication architectures. Further, a more flexible and scalable architecture allowing for the storage of user data associated with hundreds, thousands, or millions of users is desired.